/*
 * ArbolDeHuffman.h
 *
 *  Created on: 09/06/2014
 *      Author: manuel
 */

#ifndef ARBOLDEHUFFMAN_H_
#define ARBOLDEHUFFMAN_H_

#include "persistencia/Archivo.h"
#include "HuffmanArbol.h"

class Huffman {
public:
	typedef std::multimap<unsigned int, HuffNodo*> Tabla;

	Huffman();
	virtual ~Huffman();

	std::string codificarDinamico(std::string path, unsigned int tam_bloque);

	std::string decodificarDinamico(std::string path, unsigned int tam_bloque);

private:
	std::string path;

	std::string subfijo_cod;
	std::string subfijo_decod;

	void crearTablaInicial(Tabla &tabla);
	void crearTablaInicialOptimizada(Tabla &tabla);
	void actualizarTabla(Tabla &tabla, unsigned char caracter);


};

#endif /* ARBOLDEHUFFMAN_H_ */
